package material;

import commands.Command;

/**
 * Clock est l'interface de l'horloge du metronome. Elle simule l'horloge materielle en offrant des services pour gerer elle-meme l'execution de commande dans le temps.
 */
public interface Clock {

	/**
	 * Lance l'execution periodique d'une commande.
	 * @param command	La commande a executer
	 * @param period	Periode, en secondes, entre chaque execution	
	 */
	public void activatePeriodically(Command command, float period);

	/**
	 * Lance l'execution d'une commande apres un certain delai.
	 * @param command	La commande a executer
	 * @param time		Le delai, en secondes, avant l'execution
	 */
	public void activateAfterTime(Command command, float time);

	/**
	 * Desactive l'execution d'une commande.
	 * @param command	La commande a desactiver
	 */
	public void desactivate(Command command);
	
}
